package com.ruoyi.system.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 订单对象 api_order
 *
 * @author duantao
 * @date 2025-08-03
 */
public class ApiOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单ID */
    private Long id;

    /** 微信订单ID */
    private String wxOrderId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 用户名称 */
    @Excel(name = "用户名称")
    private String userName;

    /** 景区ID */
    @Excel(name = "景区ID")
    private Long scenicAreaId;

    /** 景区名称 */
    @Excel(name = "景区名称")
    private String scenicAreaName;

    /** 预留字段-景区封面图 */
    @Excel(name = "预留字段-景区封面图")
    private String scenicAreaImg;

    /** 单价 */
    @Excel(name = "单价")
    private BigDecimal unitPrice;

    /** 订购数量 */
    @Excel(name = "订购数量")
    private String quantity;

    /** 订单金额 */
    @Excel(name = "订单金额")
    private BigDecimal totalAmount;

    /** 预留字段-货币类型 */
    @Excel(name = "预留字段-货币类型")
    private String currency;

    /** 预留字段-支付方式（微信/支付宝） */
    @Excel(name = "预留字段-支付方式", readConverterExp = "微=信/支付宝")
    private String paymentMethod;

    /** 预留字段-优惠券ID */
    @Excel(name = "预留字段-优惠券ID")
    private String couponId;

    /** 折扣金额 */
    @Excel(name = "折扣金额")
    private BigDecimal discountAmount;

    /** 实付金额 */
    @Excel(name = "实付金额")
    private BigDecimal payableAmount;

    /** 订单状态（0-待付款，1-已付款，2-已取消，3-退款中，4-已退款） */
    @Excel(name = "订单状态", readConverterExp = "0=-待付款，1-已付款，2-已取消，3-退款中，4-已退款")
    private String orderStatus;

    /** 删除标志（0-未删除 1-已删除） */
    private String delFlag;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public String getWxOrderId() {
        return wxOrderId;
    }

    public void setWxOrderId(String wxOrderId) {
        this.wxOrderId = wxOrderId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public String getUserName()
    {
        return userName;
    }

    public void setScenicAreaId(Long scenicAreaId)
    {
        this.scenicAreaId = scenicAreaId;
    }

    public Long getScenicAreaId()
    {
        return scenicAreaId;
    }

    public void setScenicAreaName(String scenicAreaName)
    {
        this.scenicAreaName = scenicAreaName;
    }

    public String getScenicAreaName()
    {
        return scenicAreaName;
    }

    public void setScenicAreaImg(String scenicAreaImg)
    {
        this.scenicAreaImg = scenicAreaImg;
    }

    public String getScenicAreaImg()
    {
        return scenicAreaImg;
    }

    public void setUnitPrice(BigDecimal unitPrice)
    {
        this.unitPrice = unitPrice;
    }

    public BigDecimal getUnitPrice()
    {
        return unitPrice;
    }

    public void setQuantity(String quantity)
    {
        this.quantity = quantity;
    }

    public String getQuantity()
    {
        return quantity;
    }

    public void setTotalAmount(BigDecimal totalAmount)
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount()
    {
        return totalAmount;
    }

    public void setCurrency(String currency)
    {
        this.currency = currency;
    }

    public String getCurrency()
    {
        return currency;
    }

    public void setPaymentMethod(String paymentMethod)
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod()
    {
        return paymentMethod;
    }

    public void setCouponId(String couponId)
    {
        this.couponId = couponId;
    }

    public String getCouponId()
    {
        return couponId;
    }

    public void setDiscountAmount(BigDecimal discountAmount)
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount()
    {
        return discountAmount;
    }

    public void setPayableAmount(BigDecimal payableAmount)
    {
        this.payableAmount = payableAmount;
    }

    public BigDecimal getPayableAmount()
    {
        return payableAmount;
    }

    public void setOrderStatus(String orderStatus)
    {
        this.orderStatus = orderStatus;
    }

    public String getOrderStatus()
    {
        return orderStatus;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("wxOrderId", getWxOrderId())
            .append("userId", getUserId())
            .append("userName", getUserName())
            .append("scenicAreaId", getScenicAreaId())
            .append("scenicAreaName", getScenicAreaName())
            .append("scenicAreaImg", getScenicAreaImg())
            .append("unitPrice", getUnitPrice())
            .append("quantity", getQuantity())
            .append("totalAmount", getTotalAmount())
            .append("currency", getCurrency())
            .append("paymentMethod", getPaymentMethod())
            .append("couponId", getCouponId())
            .append("discountAmount", getDiscountAmount())
            .append("payableAmount", getPayableAmount())
            .append("orderStatus", getOrderStatus())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
